#pragma once

#include "DXAMLCommon.h"

#include "xamlname.h"

class XamlPropertyName :
	public XamlName
{
public: 
	static HRESULT Parse(const xshared_ptr<CXString> & spPrefix, const xshared_ptr<CXString const > & spLongName, xshared_ptr<XamlPropertyName> & spPropertyName);
	virtual HRESULT get_ScopedName(xshared_ptr<CXString> & outScopedName);
	HRESULT get_ScopedOwnerName(xshared_ptr<CXString> &);
	HRESULT get_FullName(xshared_ptr<CXString> & outFullName);
	HRESULT get_OwnerName(xshared_ptr<CXString> & outOwnerName);
	HRESULT get_OwnerPrefix(xshared_ptr<CXString> & outOwnerPrefix);
	HRESULT get_Owner(xshared_ptr<XamlName> & outOwner);
	HRESULT get_IsDotted(XBOOL & isDotted);

private: 
	XamlPropertyName(const xshared_ptr<XamlName> & inOwner, const xshared_ptr<CXString> & inPrefix, const xshared_ptr<CXString> & inName);
	XamlPropertyName(const xshared_ptr<CXString> & inName);
	XamlPropertyName(const xshared_ptr<XamlName> & inOwner, const xshared_ptr<CXString> & inName);
	XamlPropertyName(const xshared_ptr<CXString> & inPrefix, const xshared_ptr<CXString> & inName);

	void Init(const xshared_ptr<XamlName> & inOwner, const xshared_ptr<CXString> & inPrefix, const xshared_ptr<CXString> & inName);
	XBOOL PrivateIsDotted();
	xshared_ptr<XamlName> m_Owner; 
	xshared_ptr<CXString> m_ssFullName;
	xshared_ptr<CXString> m_ssScopedName; 
};


